perm filename MIXFIL[MIX,SYS] blob sn#020810 filedate 1972-02-01 generic text, type T, neo UTF8
COMMENT ⊗   VALID 00002 PAGES 
RECORD PAGE   DESCRIPTION
 00001 00001
 00002 00002		This subroutine is used to get file information
 00008 ENDMK
⊗;
COMMENT	⊗	This subroutine is used to get file information
		from the user.  All blanks are suppressed.  Syntax
		is as follows:
			<filename>.<extension>[proj,prog]
			with <extension> and [ppn] optional
		Called by  "FINFO"
	⊗

FINFI2:	SETZM	BLK				;*RES* ENTER TO PICK UP NAME
	SETZM	BLK+1				;*RES*   RESCANNED BY RESCN
	SETZM	BLK+2
	SETZM	BLK+3
	MOVE	11, [POINT  6, BLK]		; INIT POINTER FOR FILENAME
	MOVEI	12, 6				; SET UP COUNTER IN 12
	MOVE	10,RECHAR			;*RES* GET RESCANNED CHARACTER
	JRST	FINFI3				;*RES* WE ALREADY KNOW NON-BLANK

OPDEF	FINFO	[PUSHJ  P, .]
	SETZM	BLK				; INITIALIZE BLK
	SETZM	BLK+1
	SETZM	BLK+2
	SETZM	BLK+3
	MOVE	11, [POINT  6, BLK]		; INIT POINTER FOR FILENAME
	MOVEI	12, 6				; SET UP COUNTER IN 12
	INCHWL	10				; READ FIRST CHAR OF LINE
	SKIPA
FINFLP:	INCHRW	10				; NEXT CHAR
	CAIN	10, 40				; <BLANK> → KEEP READING
	JRST	.-2
	CAIN	10, 15				; C-R → ALL DONE
	JRST	FINDON
FINFI3:	CAIN	10, "["				; "[" → PPN COMES NEXT
	JRST	PPN
	CAIE	10, "."				; "." → EXTENSION COMES NEXT
	JRST	.+4
	MOVE	11, [POINT  6, BLK+1]		; FIX POINTER FOR EXTENSION
	MOVEI	12, 3				; SET COUNTER TO 3
	JRST	FINFLP
	TRZN	10, 100				;*RES* CONVERT TO SIXBIT BY
	TRZA	10, 40				;	REPLACING BIT 30 BY BIT 29
	TRO	10, 40
	SOJL	12, FINFLP			; N ← N-1
	IDPB	10, 11				; N≥0 → PUT INTO BLK
	JRST	FINFLP				; BACK FOR MORE CHARS
PPN:	SETZ	13,				; 13 IS A SWITCH FOR PROJ OR PROG
	MOVEI	12, 3				; SET UP COUNTER
	SETZ	11,				; 11 WILL CONTAIN 3 SIXBIT CHARS
PPNLP:	INCHRW	10				; READ CHAR
	CAIN	10, 40				; <BLANK> → KEEP READING
	JRST	.-2
	CAIN	10, 15				; C-R → ALL DONE
	JRST	PLPDON
	CAIN	10, ","				; "," → PROJ DONE
	JRST	PLPDON
	CAIN	10,"]"				;*RES* "]" → PROG DONE
	JRST	PLPDON				;*RES*
	TRZN	10, 100				;*RES* CONVERT TO SIXBIT
	TRZA	10, 40
	TRO	10, 40
	SOJL	12, PPNLP			; N←N-1; <0 → NO MORE INTO 11
	LSH	11, 6				; SHIFT 11 AND
	ADD	11, 10				;	ADD ON CHAR FROM 10
	JRST	PPNLP				; BACK FOR MORE
PLPDON:	JUMPG	13, .+4				; 13>0 → PROGRAMMER NAME
	HRLZM	11,BLK+3			;*RES* PUT PROJ INTO LEFT HALF
 	MOVEI	13, 1				;	SO GET PROG NEXT
	JRST	PPN+1
	HRRM	11,BLK+3			;*RES* PUT PROG INTO RIGHT HALF
FINDON:	INCHRW	10				; READON UNTIL  LINE-FEED
	CAIE	10, 12
	JRST	.-2
	POPJ	P,

BLK:	0					; WILL CONTAIN FILENAME
	0					; WILL CONTAIN EXTENSION
	0
	0					; WILL CONTAIN PROJ,PROG